ديف أوبس

أمر tar في لينكس

مقدمة إلى أمر tar في لينكس: المفاهيم، الاستخدامات، والخيارات المتقدمة

يُعد أمر tar أحد الأدوات الأساسية في أنظمة التشغيل لينكس ويونكس، ويُستخدم بشكل واسع لإنشاء الأرشيفات، استخراجها، أو التلاعب بها. الاسم “tar” هو اختصار لعبارة “Tape Archive”، وهي أداة ظهرت لأول مرة في أنظمة يونكس القديمة لتسهيل النسخ الاحتياطي للملفات إلى أشرطة التخزين. ومع تطور أنظمة التشغيل، استمر استخدام أمر tar كأداة أرشفة مرنة وقوية تدعم مجموعة واسعة من الوظائف، مما جعله أداة لا غنى عنها في الإدارة اليومية للأنظمة، النسخ الاحتياطي، التوزيع، وأتمتة العمليات.

يتميز أمر tar بقدرته على دمج عدد كبير من الملفات والمجلدات ضمن ملف واحد يُعرف باسم أرشيف tar أو tarball. هذا الملف الأرشيفي لا يقوم بضغط الملفات تلقائياً، بل فقط يجمعها في ملف واحد. ومع ذلك، يمكن دمج tar مع أدوات الضغط مثل gzip أو bzip2 أو xz لإنشاء أرشيفات مضغوطة. هذا يسمح للمستخدمين بنقل كميات كبيرة من البيانات بسهولة أكبر وكفاءة أعلى، سواء للاستخدام الشخصي أو على مستوى الشبكات والخوادم.


مميزات أمر tar

أمر tar يتمتع بعدد من الخصائص التي تجعله خياراً مفضلاً لإنشاء الأرشيفات مقارنة بأدوات أخرى:

  • دعم واسع للأنظمة: متاح بشكل افتراضي في معظم توزيعات لينكس ويونكس.

  • كفاءة في الأداء: سريع عند إنشاء واستخراج الأرشيفات.

  • مرونة عالية: يدعم إنشاء أرشيفات مضغوطة أو غير مضغوطة.

  • محافظ على البنية: يحتفظ بتراكيب الملفات الأصلية بما في ذلك الصلاحيات، الروابط، الطوابع الزمنية.

  • إمكانية الأتمتة: يُستخدم بكثافة في سكربتات bash لأغراض النسخ الاحتياطي والنقل والتحديثات.


البنية الأساسية لأمر tar

الصيغة الأساسية لأمر tar هي:

bash
tar [خيارات] [أرشيف] [ملفات/مجلدات]

على سبيل المثال:

bash
tar -cvf archive.tar file1 file2 dir1

في هذا المثال:

  • -c تعني “إنشاء أرشيف جديد” (create)

  • -v تعني “إظهار الملفات أثناء المعالجة” (verbose)

  • -f تعني “استخدام اسم ملف الأرشيف التالي” (file)


الخيارات الشائعة لأمر tar

الجدول التالي يوضح أهم الخيارات المستخدمة مع أمر tar:

الخيار الوصف
-c إنشاء أرشيف جديد
-x استخراج محتوى أرشيف
-v إظهار التفاصيل أثناء التنفيذ
-f تحديد اسم الأرشيف
-z استخدام gzip للضغط أو فك الضغط
-j استخدام bzip2 للضغط أو فك الضغط
-J استخدام xz للضغط أو فك الضغط
-t عرض محتويات الأرشيف دون استخراج
--delete حذف ملف من الأرشيف (غير مدعوم في بعض الإصدارات)
--append إضافة ملفات إلى الأرشيف

إنشاء أرشيف باستخدام tar

لإنشاء أرشيف بسيط غير مضغوط:

bash
tar -cvf archive.tar /path/to/files

لإنشاء أرشيف مضغوط باستخدام gzip:

bash
tar -czvf archive.tar.gz /path/to/files

أو باستخدام bzip2:

bash
tar -cjvf archive.tar.bz2 /path/to/files

أو باستخدام xz:

bash
tar -cJvf archive.tar.xz /path/to/files

كل طريقة ضغط لها مزاياها من حيث السرعة وحجم الضغط.


استخراج الأرشيفات

لاستخراج أرشيف tar عادي:

bash
tar -xvf archive.tar

لاستخراج أرشيف مضغوط باستخدام gzip:

bash
tar -xzvf archive.tar.gz

أو باستخدام bzip2:

bash
tar -xjvf archive.tar.bz2

أو باستخدام xz:

bash
tar -xJvf archive.tar.xz

ويمكن تحديد مجلد الاستخراج باستخدام الخيار -C:

bash
tar -xvf archive.tar -C /target/directory

عرض محتوى الأرشيف دون استخراجه

لرؤية محتويات الأرشيف دون استخراجه:

bash
tar -tvf archive.tar

ويمكن تطبيق ذلك مع الأرشيفات المضغوطة:

bash
tar -tzvf archive.tar.gz

تحديث أو تعديل الأرشيف

يمكن إضافة ملفات إلى أرشيف موجود باستخدام الخيار --append أو -r:

bash
tar -rvf archive.tar newfile.txt

لكن هذه العملية لا تعمل مع الأرشيفات المضغوطة، إذ يجب فك الضغط أولاً.

لحذف ملف من أرشيف (لا تعمل في جميع الإصدارات):

bash
tar --delete -f archive.tar file_to_remove.txt

استخدام tar في النسخ الاحتياطي

يُستخدم tar على نطاق واسع في عمليات النسخ الاحتياطي، حيث يمكنه حفظ البنية الكاملة للمجلدات والصلاحيات. مثال على نسخ مجلد home:

bash
tar -czvf home-backup-$(date +%F).tar.gz /home

ويمكن جدولة هذا الأمر باستخدام cron لأتمتة النسخ الاحتياطي اليومي أو الأسبوعي.


التعامل مع المسارات المطلقة

بشكل افتراضي، يحتفظ tar بالمسارات النسبية، لكن عند تضمين المسارات المطلقة، من الأفضل استخدام الخيار --absolute-names:

bash
tar -cvf archive.tar --absolute-names /etc

أو تجاهل المسارات المطلقة واستخدام --transform لتعديل الأسماء.


خيارات متقدمة ومفيدة

التعامل مع ملفات كبيرة

عند أرشفة ملفات تتعدى 2 غيغابايت، يمكن استخدام الخيار --tape-length لتقسيم الأرشيف:

bash
tar -cvf archive.tar --tape-length=1024000 /large/files

إنشاء قائمة ملفات من ملف نصي

يمكن أرشفة قائمة ملفات محددة:

bash
tar -cvf archive.tar -T filelist.txt

حيث يحتوي الملف filelist.txt على أسماء الملفات المراد أرشفتها.

استبعاد ملفات أو مجلدات

باستخدام الخيار --exclude:

bash
tar -cvf archive.tar /dir --exclude='/dir/tmp'

ويمكن استخدام عدة خيارات --exclude.


دمج tar مع الأدوات البرمجية الأخرى

تتعدد الطرق التي يُستخدم بها أمر tar ضمن بيئات العمل البرمجية والإدارية:

  • في أنظمة إدارة الحزم مثل RPM وDEB

  • في سكربتات النشر والتوزيع

  • في إرسال واستقبال الملفات عبر الشبكات باستخدام SSH و SCP

  • في إنشاء حاويات Docker حيث تستخدم Dockerfile أوامر tar لحزم الملفات ضمن الصور

مثال على استخدام tar عبر SSH:

bash
tar -czf - /local/files | ssh user@remote "tar -xzf - -C /remote/path"

مقارنة بين أدوات الضغط المستخدمة مع tar

الأداة السرعة نسبة الضغط الاستخدام
gzip سريعة متوسطة مناسب للنسخ الاحتياطي السريع
bzip2 أبطأ أعلى مناسب عند الحاجة لتقليل الحجم
xz بطيئة جداً ضغط عالي جداً للاستخدامات التي تحتاج توفير المساحة القصوى

حالات استخدام شائعة لأمر tar

  1. أرشفة المشاريع البرمجية قبل نشرها أو إرسالها.

  2. نسخ احتياطي دوري للمجلدات الهامة مثل /home أو /etc.

  3. نقل ملفات بين الخوادم عبر الشبكات.

  4. إنشاء نسخ مؤقتة قبل التعديل على ملفات النظام.

  5. حفظ البنية الأصلية عند أرشفة قواعد البيانات، المواقع، أو أنظمة الملفات.


اعتبارات الأمان عند استخدام tar

عند التعامل مع أرشيفات مستلمة من مصادر غير موثوقة، من المهم تفادي تنفيذ tar مباشرة دون التحقق من محتواها:

  • استخدم tar -tvf لمعاينة المحتوى.

  • تحقق من عدم وجود مسارات تبدأ بـ ../ والتي قد تؤدي لاستخراج ملفات خارج المجلد المقصود.

  • تأكد من الصلاحيات بعد الاستخراج.


مصادر ومراجع

  1. GNU tar Manual: https://www.gnu.org/software/tar/manual/

  2. Linux tar command documentation: https://man7.org/linux/man-pages/man1/tar.1.html


الكلمات المفتاحية: أمر tar, لينكس, أرشفة الملفات, ضغط الملفات, أرشيف tar, tar.gz, tar.bz2, النسخ الاحتياطي في لينكس, أدوات النظام, إدارة الملفات, سكربت bash, أرشيفات مضغوطة, الأمان في tar, أوامر لينكس المتقدمة